package wahadlo.controllers;

import wahadlo.model.Model;
import wahadlo.model.ModelRecipient;

/**
 * Interfejs reprezentuje kontroler. Zadaniem kontrolera jest zarządzanie
 * pobieraniem informacji ich walidacją i przesyłaniem do obiektów, które
 * generują widok - zmiany stanu GUI np. {@link Animation| animacje}.
 * 
 * @author Koziołek
 * 
 */
public interface Controller {

	/**
	 * pozwala na przesłanie danych do kontrolera.
	 * 
	 * @param model
	 *            dane
	 */
	public void putModel(Model model);

	/**
	 * Ustawia odbiorcę przetworzonych danych
	 * 
	 * @param modelRecipient
	 *            odbiorca
	 */
	public void putRecipient(ModelRecipient modelRecipient);

	/**
	 * Łączy przekazane dane z obiektami, które mogą być przetwarzane przez
	 * odbiorców.
	 * 
	 * @return
	 */
	public boolean bind();

	/**
	 * Metoda powoduje wykonanie operacji przekazania danych.
	 */
	public void process();
}
